#ifndef _BSP_ENCODER_H_
#define _BSP_ENCODER_H_
#include "stm32g0xx_hal.h"
#include "tim.h"

/* 编码器物理分辨率 7ppr */
#define ENCODER_RESOLUTION                  7
/* 电机减速比 */
#define MOTOR_GEAR_RATIO					10
/* 编码器总分辨率 */
#define ENCODER_TOTAL_RESOLUTION            (ENCODER_RESOLUTION * MOTOR_GEAR_RATIO * 4)

#define	FWD									0	/* 正转 */
#define	REV									1	/* 反转 */

typedef struct{
	uint8_t 	dir;			/* 编码器方向 */
	int8_t		overflow_cnt;	/* 编码器溢出次数统计 */
	int32_t 	pulse_cnt;		/* 编码器脉冲计数器值 */
	int32_t		speed;			/* 编码器旋转速度RPM */
}encoder_t;

extern encoder_t g_encoder;

void bsp_encoder_init(void);
void bsp_encoder_over_flow_isr(void);
void bsp_encoder_task(void);

#endif /* _BSP_ENCODER_H_ */
